package com.zhxy.gps.gateway;

import com.zhxy.gps.terminal.message.AbstractMessage;
import com.zhxy.gps.terminal.message.ReplyMessage;
import com.zhxy.util.async.ResultHandler;
import com.zhxy.util.message.AsyncMessageProcessor;

/**
 * 终端网关
 * 1.和终端保持会话
 * 2.向在线终端发送消息或接收其消息
 * 2.将终端的协议转换为标准协议
 * @author 刘勉
 *
 */
public interface TerminalGateway {
	
	/**
	 * 终端的在线状态
	 */
	public static final String STATUS_ONLINE = "online";
	
	
	void setProcessor(AsyncMessageProcessor<GatewayMessageContext, AbstractMessage> processor);
	
	/**
	 * 向指定终端发送消息
	 * @param deviceSerial 终端序列号
	 * @param message 发送的消息
	 * @param handler 终端响应处理器，可以为null
	 */
	void send(String deviceSerial, AbstractMessage message, ResultHandler<ReplyMessage> handler);
	
	/**
	 * 查询指定终端的状态
	 * @param deviceSerial 终端序列号
	 * @param name 查询的状态名称
	 * @return
	 */
	Object status(String deviceSerial, String name);
}
